package com.craft.part1;

import com.craft.common.Token;
import com.craft.common.TokenReader;

import java.util.List;

/**
 * 一个简单的Token流。是把一个Token列表进行了封装。
 */
public class SimpleTokenReader implements TokenReader {
    List<Token> tokens = null;
    int pos = 0;

    public SimpleTokenReader(List<Token> tokens){
        this.tokens = tokens;
    }

    @Override
    public Token read() {
        if(pos < tokens.size()){
            return tokens.get(pos ++);
        }
        return null;
    }

    @Override
    public Token peek() {
        if(pos < tokens.size()){
            return tokens.get(pos);
        }
        return null;
    }

    @Override
    public void unread() {
        if (pos > 0) {
            pos--;
        }
    }

    @Override
    public int getPosition() {
        return pos;
    }

    @Override
    public void setPosition(int position) {
        if(position > 0 && position < tokens.size()){
            pos = position;
        }
    }
}
